#ifndef AUTOMATION_H
#define AUTOMATION_H
#include <QObject>
class IAction;

class Automation : public QObject
{
    Q_OBJECT
public:
    Automation();
    ~Automation();

    //初始化action链条.
    void initChain(QString acc, QString psw);

    void doStart();
    void doPause();
    void doStop();
    void doResume();

    void progress();
    //账号奇数是account,偶数是密码.
    void setAccount(const QStringList &accounts);
signals:
    void sigHalt(QString message); //发生错误终止.
    void sigHold(QString message); //遇到问题被挂起，可以继续.
    void sigFinished();
protected:
    bool nextAccount();
private:
    enum State{
        Stopped,Running,Paused
    } state_;
    IAction* beginning_; //最开始的那个action
    IAction* current_;   //总是指向未完成执行的那个（出错的那个，继续执行的下一个，已完成未NULL)
    QStringList accounts_;
    int curAccount_;
};

#endif // AUTOMATION_H
